package com.example.loginproject.view.views

import android.annotation.SuppressLint
import android.content.Context
import android.text.InputType
import android.util.AttributeSet
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.EditText
import android.widget.FrameLayout
import android.widget.LinearLayout
import android.widget.TextView
import com.example.loginproject.R
import com.example.loginproject.databinding.LayoutUserInputBinding
import com.example.loginproject.user.PasswordType
//
//   //使用代码创建一个空件时，调用这个构造方法
//    constructor(context:Context):super(context){}
//   //在xml中添加一个控件，并设置相应的属性时，调用这个构造方法
//    constructor(context:Context,attrs:AttributeSet?):super(context,attrs){}
//    //在xml中添加一个控件，并设置了style样式的，就会调用这个构造方法，次构造函数
//  constructor(context:Context,attrs:AttributeSet?,style:Int):super(context,attrs,style){}


@SuppressLint("MissingInflatedId")
class UserInputView(context: Context, attrs:AttributeSet?): FrameLayout(context,attrs) {
    //    private var titleTextView: TextView
//    private var inputEditText: EditText
   private val binding: LayoutUserInputBinding by lazy {
       LayoutUserInputBinding.inflate(LayoutInflater.from(context))
    }
   //在init 中设置view和xml的布局视图相关联
    init {//当一个对象被创建时1调用构造函数，2init方法
        //将xml中的layout布局文件和当前这个类关联
        //使用布局解析器解析出来
        val layoutInflater =   LayoutInflater.from(context)
        //val view = LayoutInflater.inflate(R.layout.layout_user_input, null, false)
        //创建一个布局参数
        val lp = FrameLayout.LayoutParams(
            ViewGroup.LayoutParams.MATCH_PARENT,
            ViewGroup.LayoutParams.WRAP_CONTENT
        )
        //将解析出来的View添加到当前容器里面，显示出来
        addView(binding.root, lp)
        //解析xml文件中自定义属性
        //从attrs里解析出R.styleable.UserInputView里面自定义的属性和值
        val typedArray = context.obtainStyledAttributes(attrs,R.styleable.UserInputView)
        //从typeArray中解析每一个属性的值
        val title = typedArray.getString(R.styleable.UserInputView_title)
        val placeholder = typedArray.getString(R.styleable.UserInputView_placeholder)
        val inputType = typedArray.getInteger(R.styleable.UserInputView_input_type,2)
        //回收
        typedArray.recycle()
        binding.titleTextView.text = title
        binding.inputEditText.hint = placeholder
        if(inputType == 1){
          binding.inputEditText.inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_PASSWORD
        }
    }
}



